Personal computers (PCs) traditionally have been used to execute a multitude of software applications, features and functions. The applications provide the user with tools to accomplish tasks, such as, but not limited to, word processing, spreadsheet management, email exchange, and Internet browsing. These applications are executed on an operating system installed on the PC. Traditionally, there have been only a limited number of operating systems that are available for PCs, for example, Windows™, MAC OS®, and Linux™, which are the predominant operating systems.
Recently, however, the popularity of newly developed computing devices has resulted in the introduction of new operating systems (e.g., iOS® by Apple®, Android® by Google™, Windows RT, BlackBerry® OS, Chrome OS, and the like). Such operating systems have been developed to be installed primarily on mobile computing devices, such as smart phones, tablet computers, and the like. These devices are also capable of executing software applications (also known as Apps) on the operating system of the device.
For example, the Android® OS is based on Linux® OS kernel for core system services such as security, memory management, process management, network stack, and driver model. The kernel also acts as an abstraction layer between the hardware and upper layers of the Android OS. These layers include a set of C/C++ libraries used by various components of the Android OS, a runtime, and an application framework that provides an interface between the applications and the operating system's functions. As a result, an application, e.g., Microsoft® Word® 2010, developed for Windows-based operating systems, cannot be executed on an Android OS. This limits the user to a set of applications developed specifically for a certain type of operating system. That is, a user of a smart phone equipped with an Android OS is limited to accessing and running only applications developed for this type of an operating system.
Software applications, regardless of the type of operating system, are typically installed and set up using an automated installation program. The installation program is designed to enable the integration of the new functionality into the operating system, as well as to ensure that the application can be easily removed.
Application virtualization technology allows the execution of software applications inside an isolated virtual environment having its own virtual file system and virtual registry. That is, execution of such applications will not conflict with or impact other applications that may coexist in the virtual environment.
Typically, an operating system executed on PCs, such as Microsoft® XP®, Microsoft Vista®, Microsoft® Windows 7, Microsoft® Windows 8, and the like includes a registry file for storing the operating system, user, and application settings, as well as a record of dynamic link libraries (DLLs) which contain shared code to be used, and named objects for naming functions shared by different processes. The structure of Windows-based operating systems is incompatible with other types of operating systems, such as those designed for execution on mobile devices.
In addition, PC operating systems operate in conjunction with a file system. For example, a new technology file system (NTFS) is the standard file system for Windows XP®, Windows Server® 2003, Windows Server® 2008, Windows Server® 2012, Windows Vista®, Windows 7 and Windows 8 operating systems. The non-Windows based operating systems often do not support such file system. Thus, it may not be possible to save files in a structure of folders and sub-folders, such as provided by the NTFS. Furthermore, in many cases, users of mobile computing devices rely on cloud storage services provided by, e.g., Dropbox™, SkyDrive, and the like, to store their files.
Currently, there are no available solutions that enable an execution of a software application across different operating systems. Specifically, there is no solution that enables the execution of Windows-based OS applications on devices installed with a non-Windows based OS, while providing seamless interface to a cloud storage service instead of performing file system operations locally on the server or client's device.
Therefore, it would be advantageous to provide an efficient solution to overcome the shortcomings of currently available operating systems.